package com.example.admanagement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DBUtil {
    private static final Logger logger = LoggerFactory.getLogger(DBUtil.class);
    // 直接写死数据库连接URL，此处假设连接本地MySQL数据库，数据库名为your_database_name，可按需修改
    private static final String url = "jdbc:mysql://gz-cdb-huxxjxlz.sql.tencentcdb.com:25149/ad_management?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true";
    // 直接写死用户名，替换为实际的用户名
    private static final String username = "root";
    // 直接写死密码，替换为实际的密码
    private static final String password = "hzxy12345";

    static {
        try {
            // 加载数据库驱动，对于MySQL 8.x版本，以下语句可省略，驱动会自动加载，但早期版本需显式加载
            Class.forName("com.mysql.cj.jdbc.Driver");
            logger.info("数据库驱动加载成功");
        } catch (Exception e) {
            logger.error("数据库驱动加载出现问题", e);
            throw new RuntimeException("数据库驱动加载失败", e);
        }
    }

    public static Connection getConnection() {
        if (url == null || username == null || password == null) {
            logger.error("数据库连接配置信息不全，无法建立连接。");
            throw new RuntimeException("数据库连接配置信息缺失，无法进行连接操作");
        }
        try {
            logger.info("尝试连接数据库...");
            Connection connection = DriverManager.getConnection(url, username, password);
            if (connection!= null) {
                logger.info("数据库连接成功");
                return connection;
            } else {
                logger.error("获取数据库连接失败：连接为null");
                throw new SQLException("无法建立数据库连接");
            }
        } catch (SQLException e) {
            logger.error("获取数据库连接失败: {}", e.getMessage());
            logger.error("错误代码: {}", e.getErrorCode());
            logger.error("SQL状态: {}", e.getSQLState());
            throw new RuntimeException("数据库连接失败: " + e.getMessage(), e);
        }
    }
}